CD-Check remove Tutor 07



  • Programm: POD
  • Protection: CD-Check
  • Ziel: Ohne CD spielen

  • Autor: |VerTex|
  • Datum: 03.02.2000
  • Email: VerTex.TGC@gmx.net


  • Inhalt

  • 1. Einleitung
  • 2. Tools
  • 3. Tutor
  • 4. Sonstiges



  • Einleitung

    I'm Back to get those CD-Checks ripped!
    Nach 2 Wochen Krippe bin ich wieder da. Und Hier mein neues Tutor! Das war ein Hartes Stück Arbeit das Spiel zu cracken, denn es hat ganze 12 GetDriveTypeA und alle auch noch mit cmp eax, 5. Das ist nicht alles, gefolgt von jeden einzelnen GetDriveTypeA war ein GetVolumeInformationA. Aber wie ihr mich kennt gebe ich nicht so schnell auf...



    Tools

  • 1. Wir brauchen eine Vollinstallation von "POD"
  • 2. Win32DASM
  • 3. Hackers View




  • Tutor

    Ok! Dann lasst uns mal beginnen. Kennt ihr den Anfang noch?! Ja genau, das Spiel ohne CD Starten und sehen was da so passiert. Eine MessageBoxA die sagt: "Setzen Sie bitte die POD CD-ROM ein". Naja, das ist das, was wir wegkriegen wollen. Ich sage es im vorraus: Vergisst es, keine String Suche (bringt nichts)...
  • 1. Alles Installiert und auch im W32Dasm disassembled? Ok, dann könnten wir ja eigentlich mal nach dem GetDriveTypeA Call suchen, indem wir in W32DASM im Menü Search auf "Find Text" gehen. Jetzt geben wir den Suchbegriff GetDriveTypeA ein und lassen ihn suchen. Er findet sofort was, aber das ist nur eine Beschreibung der "Imported Functions. Also weiter suchen. Und dann haben wir ihn ja auch schon: Er dürfte bei 004789DE Liegen. Aber wenn wir jetzt auf weiter suchen klicken, dann findet er noch weitere 11 GetDriveTypeA Calls. Mmmhhh, welcher ist es? Da hilft nur eins...

  • 2. ...Wir laden die Datei in den Loader mit Hilfe von "Strg+L" und starten dann das Spiel mit "Run". Wir warten bis die Meldung kommt, die uns sagt das wir die CD brauchen, und gehen dann im W32DASM Loader auf "F7 Step Into". Normalerweise würden wir ja jetzt auf "Terminate" gehen um in den Code wieder zurück zukehren, aber das bringt diesmal nichts. Also gut aufpassen! wir müssen im "Loader" auf das Feld "Auto Stop On API" und dann gehen wir wieder zum POD Fenster und klicken "OK" (CD-Message). Die MessageBoxA ist jetzt verschwunden, aber das Programm macht jetzt auch nichts mehr. Wir müssen wieder in den "W32DASM Loader" gehen und clicken jetzt auf "Auto Step Into F5". Und dann dürfte das Programm weiterlaufen. Nach einer kurzen Zeit dürfte er dann anhalten und ein neues Win32DASM Fenster taucht auf: Es zeigt die gerade aufgerufene API Funktion und noch mehr... Klicke auf "Get API Results" und ihr seht im Fenster folgendes:

    API UINT Arg00 = GetDriveTypeA(Arg01)                <- Der GDTA Call wurde gefunden.
    API Address=004A5CCE, API Return Address=004A5CD5    <- Hier die API Address (von der GDTA im 
      Arg01 = (LPCTSTR) 005b8840 -> "A:\"                   Code steht. In unserem Fall: 004A5CCE
    
    RESULT for API GetDriveTypeA                  <- Hier die Liste der Rückgabewerte...
      Arg00 = (UINT) 00000002                     <- Ohhh, 00000002! erinnert ihr euch? Er prüft ob
      Arg01 = (LPCTSTR) 005b8840 -> "A:\"            eine CD Vorhanden ist und die CD ist 00000005!
    
    Wie wir hier sehen ist das Disketten Laufwerk angesprochen worden. Aber da passt wohl keine CD rein?! Auf alle Fälle ist hier die Stelle wo er nach der CD sucht. Der Beweiss: Wenn ihr jetzt auf "Close" geht und dann wieder auf "Auto Stop Into F5" läuft das Programm weiter. Es stoppt dann wieder automatisch beim GetDriveTypeA Call und siehe da, es ist die gleiche Adresse, nur er dürfte jetzt den Laufwerkbuchstaben "B:\" abgesucht haben. Das geht dann ewig so weiter, bis er den CD-Laufwerk Buchstaben gefunden hat, und dann geht er im Code weiter. Um zu sehen, was er so macht, beenden wir den "Loader" und gehen zurück in den Code.
  • 3. Wir gehen jetzt zur code Location: 004A5CCE (haben wir ja wohl aufgeschrieben?! Der kommt von dem schönen API Fenster) und sehen folgendes!
    * Referenced by a (U)nconditional or (C)onditional Jump at Address:
    |:004A5DD4(C)
    |
    :004A5CCD 55                      push ebp
    
    * Reference To: KERNEL32.GetDriveTypeA, Ord:0017h
                                      |
    :004A5CCE 2EFF157C057500          Call dword ptr cs:[0075057C]       <- Unser GetDriveTypeA Call
    :004A5CD5 83F805                  cmp eax, 00000005                  <- CD Laufwerk???
    :004A5CD8 0F85E4000000            jne 004A5DC2                       <- Wenn CD Laufwerk, dann 
    :004A5CDE 56                      push esi                              weiter gehen
    :004A5CDF 8D842484000000          lea eax, dword ptr [esp+00000084]
    :004A5CE6 50                      push eax
    :004A5CE7 8D8424C0070000          lea eax, dword ptr [esp+000007C0]
    :004A5CEE 50                      push eax
    :004A5CEF 8D8424C0070000          lea eax, dword ptr [esp+000007C0]
    :004A5CF6 50                      push eax
    :004A5CF7 8D8424C0070000          lea eax, dword ptr [esp+000007C0]
    :004A5CFE 50                      push eax
    :004A5CFF 56                      push esi
    :004A5D00 8D842418060000          lea eax, dword ptr [esp+00000618]
    :004A5D07 50                      push eax
    :004A5D08 55                      push ebp
    
    * Reference To: KERNEL32.GetVolumeInformationA, Ord:0023h            <- FUCK 'EM! Ich hasse den call!
                                      |                                     Hier wird geprüft was für ein 
    :004A5D09 2EFF15AC057500          Call dword ptr cs:[007505AC]          Label die CD hat. Aber wenn 
    :004A5D10 8D842400060000          lea eax, dword ptr [esp+00000600]     keine CD, dann auch kein Label
    :004A5D17 89FA                    mov edx, edi
    :004A5D19 E812D10200              call 004D2E30
    :004A5D1E 85C0                    test eax, eax                      <- Oh, Oh, hier der Vergleich
    :004A5D20 0F859C000000            jne 004A5DC2                       <- Wenn falsch dann springe zur
    :004A5D26 C6054C885B0001          mov byte ptr [005B884C], 01           Error Message
    
    Ok, jetzt wissen wir ja was passiert. Wir müssen dem PC sagen, dass eine CD drin ist und das richtige Label hat. Aber wir gehen diesmal her und sagen dem GetDriveTypeA, das er weiter gehen soll, wenn er den Festplatten Buchstaben gefunden hat. Der Rückgabewert der Festplatte ist eax = 3. Also werden wir den code so änder: cmp eax, 00000005 -> cmp eax, 00000003 Das wäre dann geschafft. Jetzt läuft das Programm schon mal weiter, obwohl keine CD Im Laufwerk ist. Aber da ist ja noch der GetVolumeInformationA! Man könnte jetzt den Festplattennamen in "POD2_0" umändern, aber wer macht das schon. Also faken wir den Jump nach dem Test: jne 004A5DC2 -> je 004A5DC2 Jetzt vergleicht das Programm zwar den CD Labelnamen aber er hat keinen jump, den er machen könnte. Er läuft einfach weiter.
    Hehe! Das wäre es dann für W32Dasm aber jetzt brauchen wir "Hackers View". Hier werden wir die Veränderungen vornehmen, denn mit W32Dasm gab es bei mir einige Probleme (Absturz).
  • 4. Wir öffnen "Hackers View" und laden die Datei (PODMMX.EXE). Jetzt seht ihr den Inhalt im ASCII Format. Wenn wir jetzt "F4" drücken und dann auf "Decode" gehen sehen wir den Code in ASM Format. Jezt "F5" und die Adresse aus W32Dasm eingeben (004A5CCE). ACHTUNG: wann muss eine punkt vor die Adresse setzen also: .004A5CCE und wir sind am GetDriveTypeA Call. Nun mit den Pfeiltasten zur Adresse 004A5CD5. Da steht dan die folgende Zeile: 83 F8 05 jetzt auf "F3" um den Text zu verändern. Wir brauchen nur die 05 zu 03 ändern und dann "F9" (zum Updaten) und der erste schritt ist getan. Jetzt das selbe Spielchen mit der Adresse: 004A5D20 (GetVolumeInformationA Jump nach dem Test). Hier schreiben wir folgendes um: 0F 85 -> 0F 84 und wiederum "F9" zum Updaten. Jetzt ist alles getan und wir können "F10" drücken um das Programm zu beenden.
  • 5. Jetzt müssten wir POD ohne CD starten können. Falls ihr Probleme habt beim sehen vom Menü (verwischte Grafik), dann müsst ihr "ALT+Eingabetaste" drücken um zum Fenster Modus zu wechseln. Und da ist ja auch schon das Hauptmenü! Ihr dürftet eigentlich alles machen können außer "Ubisoft Online", denn da kommt wieder die CD abfrage. Aber versucht ihr es doch mal?! Vielleicht bekommt ihr es ja weg. Ich habe nämlich keine Lust mehr zu schreiben.




  • Sonstige

    Das war alles. Und auch nicht wenig. WEnn ihr noch irgendwelche Fragen habt, dann mailt mir einfach. Und besucht mal unsere TGC Homepage!

    Grüsse gehen raus an die Kryptocrew, Fireball, ultraschall und an den Rest der TGC Crew

    Dankeschön geht raus an R!SC und Black Check